<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // js是单线程 ：频繁的dom操作
        // js代码执行是重上到下的  
        // 定时器的时候 ：
        // 定时器是典型的异步函数
        // setInterval(() => {
            
        // }, interval);
        // setTimeout(() => {
            
        // }, timeout);

        // console.log(111);
        // console.log(222);
        // setTimeout(() => {
        //     console.log(444);
        // }, 0);

        // console.log(333);
        
        //一、 改变原有的封装 强行让111在 定时器之后执行；（不推荐）
        // function move(){
        //     setTimeout(() => {
        //         console.log("一堆的逻辑");
        //         console.log(111);
        //     }, 2000);
        //     // setInterval(() => {
        //     //     console.log("一堆的逻辑");
        //     // }, 2000);
        // }
        // // 想定时器执行之后在执行一些逻辑
        // move()
        // 二、回调函数 ：留一个出口给封装外边使用
        // 如果想让代码执行在异步代码执行之后 咋办？通过回调（callback）来解决这个问题
        function move(cb){
            // console.log(cb);
            setTimeout(() => {
                console.log("一堆的逻辑");
                // console.log(111);
                // cb一定会在 定时器执行完成之后调用
                cb && cb(); 
            }, 2000);
        }
        // 想定时器执行之后在执行一些逻辑
        move(function(){
            console.log(1111);
        })

        // console.log(1111);
       


    </script>
</body>
</html>